home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Languguage OS 2
/
Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO
/
language
/
embedded
/
develop
/
symcoff.arc
/
PLOPEN.C
< prev
next >
Wrap
Text File
|
1988-11-07
|
3KB
|
79 lines
static char *sccsid[]={"@(#)pldopen.c 2.1",
"Copyright 1985 by Motorola Inc."};
#include <stdio.h>
#ifdef PCPORT
#include "/pld/src/hd/pcport.h" /*PC-PORT*/
#endif
#include "../hd/par.h"
#include "../hd/pfilehdr.h"
#include "../hd/pldfcn.h"
#include "../hd/pldf_dcl.h" /*PC-PORT*/
/****************** PLDOPEN ********************************************gs##*/
/* ##*/
/* ##*/
/* Written by: Michael Greenberg - MIL ##*/
/* ##*/
/* ACTION: ##*/
/* Open a common object file for reading. ##*/
/* ##*/
/* SYNOPSIS: ##*/
LDFILE *pldopen(filename, ldptr) /*##*/
/* --------------------------------- ##*/
register char *filename; /*##*/
register LDFILE *ldptr; /*##*/
/* ##*/
/*************************************************************************##*/
{
char line[sizeof(ARMAG)];
register long disp;
long ftell();
struct ar_hdr ar_head;
register LDFILE *nldptr;
if(!ldptr)
{
if((nldptr=(LDFILE *) pldallocptr()) == FAILURE)
return(NULL);
#ifndef PCPORT
if((IOPTR(nldptr) = fopen(filename, "r")) == NULL)
return(NULL);
#else
if((IOPTR(nldptr) = fopen(filename, "rb")) == NULL)
return(NULL);
#endif
if(fread(line, sizeof(ARMAG), 1, IOPTR(nldptr)) != 1)
return(NULL);
#ifndef PCPORT
if(strncmp (line, ARMAG, sizeof(ARMAG) - 1) == 0)
#else
if(strnicmp(line, ARMAG, sizeof(ARMAG) - 1) == 0)
#endif
{
/* archive format */
TYPE(nldptr) = PLDARMAG;
OFFSET(nldptr) = sizeof(ARMAG) + sizeof(struct ar_hdr) - 1;
disp = _fpldahread(nldptr) + OFFSET(nldptr) +
sizeof(struct ar_hdr);
fseek(IOPTR(nldptr), disp, 0);
OFFSET(nldptr) = ftell(IOPTR(nldptr));
}
else
{
fseek(IOPTR(nldptr), 0L, 0);
OFFSET(nldptr) = 0L;
TYPE(nldptr) = 1;
}
fread(&HEADER(nldptr), FILHSZ, 1, IOPTR(nldptr));
return(nldptr);
}
else
{
if(fread(&HEADER(ldptr), FILHSZ, 1, IOPTR(ldptr)) != 1)
return(NULL);
return(ldptr);
}
}
/* Copyright 1985 by Motorola Inc. */